/** * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio */ package com.hundsun.ares.studio.jres.metadata.ui.wizards; import java.io.File; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.ide.ResourceUtil; import org.eclipse.ui.model.WorkbenchLabelProvider; import com.hundsun.ares.studio.core.IARESElement; import com.hundsun.ares.studio.internal.core.ARESProject; /** * @author gongyf * */ public abstract class SelectProjectAndExcelFileWizardPage extends WizardPage { protected IProject project; protected File excelFile; /** * @param pageName */ protected SelectProjectAndExcelFileWizardPage(String pageName, IStructuredSelection selection) { super(pageName); IProject project = null; Object obj = selection.getFirstElement(); if (obj instanceof IProject) { project = (IProject) obj; } else if (obj instanceof IARESElement) { project = ((IARESElement) obj).getARESProject().getProject(); } else { // �ڿհ״��Ҽ������򵼵�����£�objΪ�� // BUG #3297::�ڹ����ռ�հ״�����Ҽ�ѡ�񡰵��롱�򡰵�������˫����JRES���µIJ˵���󱨴� if (obj != null) project = (IProject) ResourceUtil.getAdapter(obj, IProject.class, true); } this.project = project; } /** * @return the project */ public IProject getSelectedProject() { return project; } /** * @return the excelFile */ public File getExcelFile() { return excelFile; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ @Override public void createControl(Composite parent) { Composite client = new Composite(parent, SWT.NONE); TableViewer viewer = new TableViewer(client, SWT.SINGLE | SWT.BORDER); viewer.setLabelProvider( WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider()); viewer.setContentProvider(ArrayContentProvider.getInstance()); viewer.setInput(ResourcesPlugin.getWorkspace().getRoot().getProjects()); // ���˵���JRES���� viewer.setFilters(new ViewerFilter[]{ new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { IProject project = (IProject) element; return ARESProject.hasARESNature(project); } } }); if (project != null) { viewer.setSelection(new StructuredSelection(project), true); } viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { project = (IProject) ((IStructuredSelection)event.getSelection()).getFirstElement(); validate(); } }); Label label = new Label(client, SWT.NONE); label.setText("Excel�ļ���"); final Text text = new Text(client, SWT.SINGLE | SWT.BORDER); text.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { excelFile = new File(text.getText()); validate(); } }); Button button = new Button(client, SWT.PUSH); button.setText("���..."); button.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { FileDialog dlg = newFileDialog(getShell()); dlg.setFilterExtensions(new String[]{"*.xls"}); String path = dlg.open(); if (path != null) { text.setText(path); } } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); GridLayoutFactory.swtDefaults().numColumns(3).applyTo(client); GridDataFactory.fillDefaults().grab(true, true).span(3, 1).applyTo(viewer.getControl()); GridDataFactory.swtDefaults().applyTo(label); GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(text); GridDataFactory.swtDefaults().applyTo(button); setControl(client); validate(); } protected abstract FileDialog newFileDialog(Shell shell); protected void validate() { if (project == null || !(ARESProject.hasARESNature(project))) { setErrorMessage("��ѡ��һ������"); setPageComplete(false); } else { setErrorMessage(null); setPageComplete(true); } } }